﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace Palindrome25Dec
{
    class Program
    {
        static void Main(string[] args)
        {
            int choise;
            Console.WriteLine(@"Введите номер программы 1-3
1 - Пользователь вводит строку. Необходимо удалить из нее все пробелы, после этого определить является ли она палиндромом.
2 - Определить самую длинную строку в файле и вывести ее номер на экран. Если строк несколько - то вывести номера всех таких строк.
3 - Пользователь вводит букву, необходимо вывести все слова в файле которые начинаются или заканчиваются на эту букву.");
            choise = Int32.Parse(Console.ReadLine());
            if (choise > 0 && choise < 4)
            {
                switch (choise)
                {
                    case 1:
                        FindPalindrome();
                        break;
                    case 2:
                        countElementsInLine();
                        break;
                    case 3:
                        MagicLetter();
                        break;
                }
            }
            else
                Console.WriteLine("Вы ввели неправильное значение, программа прекращает работу!");
        }
        static void FindPalindrome()
        {
            int counter = 0;
            Console.WriteLine("Введите строку, можно палиндром, можно с пробелами");
            string inputString = Console.ReadLine();
            if (inputString.Contains(" "))
            {
                inputString = inputString.Replace(" ", "");
            }
            string inputSubString1 = inputString.Substring(0, inputString.Length / 2);
            string inputSubString2 = inputString.Substring(inputString.Length / 2);

            char[] arrayInputSubString1 = inputSubString1.ToArray();
            char[] reverseInputSubString2 = inputSubString2.Reverse().ToArray();
            for (int i = 0; i < inputString.Length / 2; i++)
            {
                if (arrayInputSubString1[i] == reverseInputSubString2[i])
                {
                    counter++;
                }
                else
                {
                    Console.WriteLine("Это не палиндром - чушь какая то!");
                    break;
                }
            }
            if (counter == inputString.Length / 2)
                Console.WriteLine("Это палиндром!");
        }
        static void MagicLetter()
        {
            string path = @"E:\с#\Codeplex\Inteducation\apetrenko\Palindrome25Dec\HTtask\HT.txt";
            string allTextfromFile = File.ReadAllText(path);
            Console.WriteLine("Введите букву");
            string necessaryLetter = Console.ReadLine();
            List<string> necessaryWord = new List<string>();
            char[] Symbols = { ',', '.', '(', ')', '\n', '\r' };
            foreach (var item in Symbols)
            {
                if (allTextfromFile.Contains(item))
                {
                    allTextfromFile = allTextfromFile.Replace(item, ' ');
                }
            }
            string[] allTextfromFileArray = allTextfromFile.Split(' ');
            foreach (var word in allTextfromFileArray)
            {
                if (word.Trim().StartsWith(necessaryLetter))
                {
                    necessaryWord.Add(word);
                }
                if (word.Trim().EndsWith(necessaryLetter))
                {
                    necessaryWord.Add(word);
                }
            }
            Console.WriteLine("Такие слова начинаются/заканчиваются с буквы {0}", necessaryLetter);
            foreach (var item in necessaryWord)
            {
                Console.Write("{0} ", item);
            }
            Console.WriteLine();
        }
        static void countElementsInLine()
        {
            int maxAmountOfCharacters = 0;
            string allTextfromFile = File.ReadAllText(@"E:\с#\Codeplex\Inteducation\apetrenko\Palindrome25Dec\HTtask\HT.txt");
            string[] arrayTextfromFile = allTextfromFile.Split('.');
            foreach (var sentence in arrayTextfromFile)
            {
                if (sentence.Trim().Length> maxAmountOfCharacters)
                {
                    maxAmountOfCharacters = sentence.Trim().Length;
                }
            }
            for (int i = 0; i< arrayTextfromFile.Length; i++)
            {
                if (arrayTextfromFile[i].Trim().Length == maxAmountOfCharacters)
                {
                    Console.WriteLine("Cамое длинное предложение №{0} c {1} знаками", i+1, maxAmountOfCharacters);
                }
            }
        }
    }
}
